package org.jeecg.modules.oms.service;

import com.alibaba.fastjson.JSONArray;
import org.jeecg.modules.oms.entity.ProductSalesOrderDetail;

import java.util.List;
import java.util.Map;

/**
 * 长风窗型确认文件数据服务接口
 */
public interface ICfWindowDataService {
    
    /**
     * 保存型材尺寸表数据
     *
     * @param detailId 订单明细ID
     * @param tenantId 租户ID
     * @param jsonArray 型材尺寸表JSON数据
     * @return 是否成功
     */
    boolean saveProfileSizeTable(String detailId, Integer tenantId, JSONArray jsonArray);
    
    /**
     * 保存玻璃尺寸表数据
     *
     * @param detailId 订单明细ID
     * @param tenantId 租户ID
     * @param jsonArray 玻璃尺寸表JSON数据
     * @return 是否成功
     */
    boolean saveGlassSizeTable(String detailId, Integer tenantId, JSONArray jsonArray);
    
    /**
     * 保存内扇尺寸表数据
     *
     * @param detailId 订单明细ID
     * @param tenantId 租户ID
     * @param jsonArray 内扇尺寸表JSON数据
     * @return 是否成功
     */
    boolean saveInnerSashSizeTable(String detailId, Integer tenantId, JSONArray jsonArray);
    
    /**
     * 保存配件表数据
     *
     * @param detailId 订单明细ID
     * @param tenantId 租户ID
     * @param jsonArray 配件表JSON数据
     * @return 是否成功
     */
    boolean saveAccessoriesTable(String detailId, Integer tenantId, JSONArray jsonArray);
    
    /**
     * 保存长风窗型确认文件的所有相关数据
     *
     * @param detail 产品销售订单明细
     * @return 是否成功
     */
    boolean saveAllWindowData(ProductSalesOrderDetail detail);
    
    /**
     * 根据订单明细ID删除所有相关数据
     *
     * @param detailId 订单明细ID
     * @return 是否成功
     */
    boolean deleteAllByDetailId(String detailId);
    
    /**
     * 获取产品明细的配件信息
     *
     * @param detailId 订单明细ID
     * @return 配件信息列表
     */
    List<Map<String, Object>> getAccessoriesByDetailId(String detailId);
    
    /**
     * 获取产品明细的配件信息（带窗号过滤）
     *
     * @param detailId 订单明细ID
     * @param windowNo 窗号
     * @return 配件信息列表
     */
    List<Map<String, Object>> getAccessoriesByDetailIdAndWindowNo(String detailId, String windowNo);
    
    /**
     * 获取产品明细的玻璃尺寸信息
     *
     * @param detailId 订单明细ID
     * @return 玻璃尺寸信息列表
     */
    List<Map<String, Object>> getGlassSizeByDetailId(String detailId);
    
    /**
     * 获取产品明细的玻璃尺寸信息（带窗号过滤）
     *
     * @param detailId 订单明细ID
     * @param windowNo 窗号
     * @return 玻璃尺寸信息列表
     */
    List<Map<String, Object>> getGlassSizeByDetailIdAndWindowNo(String detailId, String windowNo);
    
    /**
     * 获取产品明细的型材尺寸信息
     *
     * @param detailId 订单明细ID
     * @return 型材尺寸信息列表
     */
    List<Map<String, Object>> getProfileSizeByDetailId(String detailId);
    
    /**
     * 获取产品明细的型材尺寸信息（带窗号过滤）
     *
     * @param detailId 订单明细ID
     * @param windowNo 窗号
     * @return 型材尺寸信息列表
     */
    List<Map<String, Object>> getProfileSizeByDetailIdAndWindowNo(String detailId, String windowNo);
    
    /**
     * 获取产品明细的新格尔配件信息
     *
     * @param detailId 订单明细ID
     * @return 新格尔配件信息列表
     */
    List<Map<String, Object>> getXgeAccessoriesByDetailId(String detailId);
    
    /**
     * 获取产品明细的新格尔配件信息（带窗号过滤）
     *
     * @param detailId 订单明细ID
     * @param windowNo 窗号
     * @return 新格尔配件信息列表
     */
    List<Map<String, Object>> getXgeAccessoriesByDetailIdAndWindowNo(String detailId, String windowNo);
    
    /**
     * 获取产品明细的新格尔玻璃尺寸信息
     *
     * @param detailId 订单明细ID
     * @return 新格尔玻璃尺寸信息列表
     */
    List<Map<String, Object>> getXgeGlassSizeByDetailId(String detailId);
    
    /**
     * 获取产品明细的新格尔玻璃尺寸信息（带窗号过滤）
     *
     * @param detailId 订单明细ID
     * @param windowNo 窗号
     * @return 新格尔玻璃尺寸信息列表
     */
    List<Map<String, Object>> getXgeGlassSizeByDetailIdAndWindowNo(String detailId, String windowNo);
    
    /**
     * 获取产品明细的新格尔型材尺寸信息
     *
     * @param detailId 订单明细ID
     * @return 新格尔型材尺寸信息列表
     */
    List<Map<String, Object>> getXgeProfileSizeByDetailId(String detailId);
    
    /**
     * 获取产品明细的新格尔型材尺寸信息（带窗号过滤）
     *
     * @param detailId 订单明细ID
     * @param windowNo 窗号
     * @return 新格尔型材尺寸信息列表
     */
    List<Map<String, Object>> getXgeProfileSizeByDetailIdAndWindowNo(String detailId, String windowNo);
}